<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://www.w3.org/TR/html4/loose.dtd">
<html lang="zh-CN"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta http-equiv="Content-Language" content="zh-CN"><link href="stylesheet.css" media="all" rel="stylesheet" type="text/css">
<title>pg_statistic</title>
<script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?d286c55b63a3c54a1e43d10d4c203e75"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script>
</head><body class="SECT1">
<div>
<table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr><th colspan="5" align="center" valign="bottom">PostgreSQL 8.2.3 中文文档</th></tr>
<tr><td width="10%" align="left" valign="top"><a href="catalog-pg-shdescription.html" accesskey="P">后退</a></td><td width="10%" align="left" valign="top"><a href="catalogs.html">快退</a></td><td width="60%" align="center" valign="bottom">章43. 系统表</td><td width="10%" align="right" valign="top"><a href="catalogs.html">快进</a></td><td width="10%" align="right" valign="top"><a href="catalog-pg-tablespace.html" accesskey="N">前进</a></td></tr>
</table>
<hr align="LEFT" width="100%"></div>
<div class="SECT1"><h1 class="SECT1"><a name="CATALOG-PG-STATISTIC">43.31. <tt class="STRUCTNAME">pg_statistic</tt></a></h1><a name="AEN64733"></a>
<p><tt class="STRUCTNAME">pg_statistic</tt> 表存储有关该数据库内容的统计数据。记录是由 <tt class="COMMAND">ANALYZE</tt> 创建的，并且随后被查询规划器使用。请注意所有统计信息天生都是近似的数值，即使假设它是最新的也如此。</p>
<p><tt class="STRUCTNAME">pg_statistic</tt> 还存储有关索引表达式数值的统计数据。这些是把他们当作实际的数据字段来描述的；特别是，<tt class="STRUCTFIELD">starelid</tt> 引用索引。不过，普通的非表达式字段没有记录，因为会和下层的表字段记录冗余。</p>
<p>因为不同类型的统计信息适用于不同类型的数据，<tt class="STRUCTNAME">pg_statistic</tt> 被设计成不太在意自己存储的是什么类型的统计。只有极为常用的统计信息(比如 NULL 的含量)才在 <tt class="STRUCTNAME">pg_statistic</tt> 里给予专用的字段。其它所有东西都存储在"槽位"中，而槽位是一组相关的字段，它们的内容用槽位中的一个字段的代码号码表示。更详细的信息请参阅 <tt class="FILENAME">src/include/catalog/pg_statistic.h</tt></p>
<p><tt class="STRUCTNAME">pg_statistic</tt> 不应该是公众可读的，因为即使是表内容的统计信息也应该认为是敏感的。例子：薪水字段的最大最小值肯定是相当让人感兴趣的。<a href="view-pg-stats.html"><tt class="STRUCTNAME">pg_stats</tt></a> 是一个在 <tt class="STRUCTNAME">pg_statistic</tt> 上的全局可读的视图，它只显示那些表对于当前用户可读的信息。</p>
<div class="TABLE"><a name="AEN64751"></a>
<p><b>表43-31. <tt class="STRUCTNAME">pg_statistic</tt> 字段</b></p>
<table border="1" class="CALSTABLE"><col><col><col><col>
<thead>
<tr><th>名字</th><th>类型</th><th>引用</th><th>描述</th></tr>
</thead>
<tbody>
<tr><td><tt class="STRUCTFIELD">starelid</tt></td><td><tt class="TYPE">oid</tt></td><td><tt class="LITERAL"><a href="catalog-pg-class.html"><tt class="STRUCTNAME">pg_class</tt></a>.oid</tt></td><td>所描述的字段所属的表或者索引</td></tr>
<tr><td><tt class="STRUCTFIELD">staattnum</tt></td><td><tt class="TYPE">int2</tt></td><td><tt class="LITERAL"><a href="catalog-pg-attribute.html"><tt class="STRUCTNAME">pg_attribute</tt></a>.attnum</tt></td><td>所描述的字段的个数</td></tr>
<tr><td><tt class="STRUCTFIELD">stanullfrac</tt></td><td><tt class="TYPE">float4</tt></td><td>&nbsp;</td><td>该字段中为 NULL 的记录的比率</td></tr>
<tr><td><tt class="STRUCTFIELD">stawidth</tt></td><td><tt class="TYPE">int4</tt></td><td>&nbsp;</td><td>非 NULL 记录的平均存储宽度，以字节计</td></tr>
<tr><td><tt class="STRUCTFIELD">stadistinct</tt></td><td><tt class="TYPE">float4</tt></td><td>&nbsp;</td><td>字段里唯一的非 NULL 数据值的数目。一个大于零的数值是独立数值的实际数目。一个小于零的数值是表中行数的分数的负数(比如，一个字段的数值平均出现概率为两次，那么可以表示为 <tt class="STRUCTFIELD">stadistinct</tt> = -0.5)。零值表示独立数值的数目未知。</td></tr>
<tr><td><tt class="STRUCTFIELD">stakind<tt class="REPLACEABLE"><i>N</i></tt></tt></td><td><tt class="TYPE">int2</tt></td><td>&nbsp;</td><td>一个编码，表示这种类型的统计存储在 <tt class="STRUCTNAME">pg_statistic</tt> 行的第 <tt class="REPLACEABLE"><i>N</i></tt> 个"槽位"。</td></tr>
<tr><td><tt class="STRUCTFIELD">staop<tt class="REPLACEABLE"><i>N</i></tt></tt></td><td><tt class="TYPE">oid</tt></td><td><tt class="LITERAL"><a href="catalog-pg-operator.html"><tt class="STRUCTNAME">pg_operator</tt></a>.oid</tt></td><td>一个用于生成这些存储在第 <tt class="REPLACEABLE"><i>N</i></tt> 个"槽位"的统计信息的操作符。比如，一个柱面图槽位会显示 <tt class="LITERAL">&lt;</tt> 操作符，该操作符定义了该数据的排序顺序。</td></tr>
<tr><td><tt class="STRUCTFIELD">stanumbers<tt class="REPLACEABLE"><i>N</i></tt></tt></td><td><tt class="TYPE">float4[]</tt></td><td>&nbsp;</td><td>第 <tt class="REPLACEABLE"><i>N</i></tt> 个"槽位"的相关类型的数值类型统计，如果该槽位和数值类型没有关系，那么就是 NULL 。</td></tr>
<tr><td><tt class="STRUCTFIELD">stavalues<tt class="REPLACEABLE"><i>N</i></tt></tt></td><td><tt class="TYPE">anyarray</tt></td><td>&nbsp;</td><td>第 <tt class="REPLACEABLE"><i>N</i></tt> 个"槽位"相关类型的字段数据值，如果该槽位类型不存储任何数据值那么就是 NULL 。每个数组的元素值实际上都是指定字段的数据类型，因此，除了把这些字段的类型定义成 <tt class="TYPE">anyarray</tt> 之外，没有更好的办法。</td></tr>
</tbody>
</table>
</div>
</div>
<div>
<hr align="LEFT" width="100%">
<table summary="Footer navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr><td width="33%" align="left" valign="top"><a href="catalog-pg-shdescription.html" accesskey="P">后退</a></td><td width="34%" align="center" valign="top"><a href="index.html" accesskey="H">首页</a></td><td width="33%" align="right" valign="top"><a href="catalog-pg-tablespace.html" accesskey="N">前进</a></td></tr>
<tr><td width="33%" align="left" valign="top"><tt class="STRUCTNAME">pg_shdescription</tt></td><td width="34%" align="center" valign="top"><a href="catalogs.html" accesskey="U">上一级</a></td><td width="33%" align="right" valign="top"><tt class="STRUCTNAME">pg_tablespace</tt></td></tr>
</table>
</div>
</body></html>